//index.js

Page({
  //绑定数据
  data: {
    //图片旋转角度
    rotate: 0,
    //方向
    direction: '--',
    //角度
    angle: 0
  },
  //页面加载完成
  onLoad: function () {
    //缓存this
    const that = this
    //获取罗盘数据
    wx.onCompassChange(function (res) {
      //获取罗盘旋转角度
      const value = res.direction
      //更新数据
      that.setData({
        //更新图片旋转角度
        rotate: -value,
        //更新方向
        direction: that.getDirectionText(value),
        //更新角度
        angle: value.toFixed(2)
      })
    })
    //5秒后，判断direction与angle默认值是否发生改变，
    //如果没有改变，说明wx.onCompassChange没有执行，
    //用户不支持罗盘，提示用户
    setTimeout(function () {
      //默认值是否改变
      if (that.data.direction === '--' && that.data.angle === 0) {
        //提示用户
        wx.showToast({
          title: '您的手机不支持罗盘，或罗盘被禁用',
          icon: 'loading',
          duration: 5000
        })
      }
    }, 5000)
  },
  //获取当前角度对应文案
  getDirectionText: function (value) {
    //定义文案数组
    const dir = '正北 东北 正东 东南 正南 西南 正西 西北'.split(' ')
    //定义角度区间值
    const dirAngle = 360 / 8
    //获取文本索引值
    const index = Math.floor((value + dirAngle / 2) / dirAngle % 8)
    //返回文本
    return dir[index]
  }
})
